home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 21 / AMIGAplus Sonderheft 21 (1999)(ICP)(DE)[!].iso / PublicDomain / System / recoverdeldir / arexx / Lister < prev    next >
Text File  |  1999-08-23  |  5KB  |  157 lines

  1. /* $VER: Lister 1.1 (12.5.1999) by Ralf Heinert       */
  2. /* DirOpus ARexx-Script (opens a DOpus5-lister)       */
  3. /* Created for usage in guides                        */
  4.  
  5. /* Structure: */
  6. /* DH0:Directory/Docs/The.Guide                       */
  7. /* DH0:Directory/Docs/Stuff/File                      */
  8. /* DH0:Directory/ARexx/Lister (This Script)           */
  9.  
  10. /* Usage:   */
  11. /* @{"Button" rx "/ARexx/Lister <Dir> [REQ|Files] [Opt]"} */
  12.  
  13. /* <Dir>:   */
  14. /* No argument :                                      */
  15. /*         = PROGDIR (e.g. the location of the guide)    Lister              -> DH0:Directory/Docs/        */
  16. /* If you want the lister to do something else,       */
  17. /* you have to fill <Dir> with 'PROGDIR'.             */
  18. /* PROGDIR = PROGDIR (e.g. the location of the guide)    Lister PROGDIR DEST -> DH0:Directory/Docs/        */
  19. /* Dir     = Directory in PROGDIR                        Lister Stuff        -> DH0:Directory/Docs/Stuff/  */
  20. /* /       = Directory above PROGDIR                     Lister /            -> DH0:Directory/             */
  21. /* //      = Directory above Directory above PROGDIR     Lister //           -> DH0:                       */
  22. /* /Dir    = Directory in the directory above PROGDIR    Lister /ARexx       -> DH0:Directory/ARexx/       */
  23. /* Ram:T   = Absolute Path 'Ram:T'                                                                         */
  24.  
  25. /* [Files]: */
  26. /* Files (Filenames) to be selected                   */
  27. /* e.g  LISTER Ram: Disk.info                         */
  28.  
  29. /* [REQ]:   */
  30. /* If the first word after the directory is REQ          */
  31. /* the following words will be parsed as text            */
  32. /* and will be displayed in a lister-requester.          */
  33. /* e.g. Lister Ram: REQ This is a destinationlister DEST */
  34.  
  35. /* [Opt]:   */
  36. /* SOURCE     -> lister set handle source             */
  37. /* SOURCELOCK -> lister set handle source lock        */
  38. /* DEST       -> lister set handle dest               */
  39. /* DESTLOCK   -> lister set handle dest lock          */
  40.  
  41.  
  42. PARSE ARG Dir Files
  43. OPTIONS RESULTS
  44. IF Pos("/",Dir) = 1 THEN DO
  45.   n = 1
  46.   DO WHILE Substr(Dir,2,1) = "/"
  47.     Dir = Substr(Dir,2)
  48.     n = n + 1
  49.   END
  50.   Prd = Pragma('D')
  51.   DO i = 1 TO n
  52.     IF Pos("/",Prd) = 0 THEN
  53.       Prd = Left(Prd,LastPos(":",Prd))
  54.     ELSE DO
  55.       Prd = Left(Prd,Length(Prd)-1)
  56.       IF Pos("/",Prd) = 0 THEN
  57.         Prd = Left(Prd,LastPos(":",Prd))
  58.       ELSE
  59.         Prd = Left(Prd,LastPos("/",Prd))
  60.     END
  61.   END
  62.   IF Length(Dir) > 1 THEN
  63.       Dir = Prd||SubStr(Dir,2)
  64.   ELSE Dir = Prd
  65. END
  66. ELSE IF Dir = '' | Upper(Dir) = 'PROGDIR' THEN
  67.   Dir = Pragma('D')
  68. ELSE IF Pos(":",Dir) = 0 & Length(Dir) > 0 THEN DO
  69.   Prd = Pragma('D')
  70.   IF Length(Dir) > 0 THEN DO
  71.     IF Pos(":",Prd) ~= Length(Prd) THEN
  72.       Dir = Prd"/"SubStr(Dir,1)
  73.     ELSE
  74.       Dir = Prd||SubStr(Dir,1)
  75.   END
  76.   ELSE Dir = Prd
  77. END
  78. Dir = Strip(Dir,'B','/')
  79.  
  80. i = 0
  81. FileList = D2C(10)
  82. DO WHILE Files ~= ''
  83.   i = i + 1
  84.   Parse Var Files File.i Files
  85.   IF Left(File.i,4) ~= "DEST" & Left(File.i,6) ~= "SOURCE" & File.i ~= "REQ"  THEN
  86.     FileList = FileList||File.i||D2C(10)
  87. END
  88. File.0 = i - 1
  89.  
  90. DOpusPort = "DOPUS.1"
  91. IF Show('P',DOpusPort)  THEN ADDRESS VALUE DOpusPort
  92. ELSE DO
  93.   CALL _GetLanguage()
  94.   IF Language = "deutsch" THEN
  95.     address command 'c:RequestChoice "Fehler" "DOpus läuft nicht !*nKann keinen Lister öffnen." "OK"'
  96.   ELSE
  97.     address command 'c:RequestChoice "Error" "DOpus isn`t running !*nCannot open any Lister." "OK"'
  98.   EXIT
  99. END
  100.  
  101. IF EXISTS(Dir) THEN DO
  102.   address value DOpusPort
  103.   lister new '-1/-1/300/250 'Dir
  104.   handle = RESULT
  105.   lister wait handle
  106.   /* deselect entries */
  107.   Lister query handle selentries stem sels
  108.   DO se = 0 TO sels.count - 1
  109.     Lister select handle sels.se 0
  110.   END
  111.   /* deactivate dest-listers */
  112.   Lister query dest stem destlister
  113.   IF Left(File.i,4) = "DEST" THEN DO
  114.     n = 0
  115.     DO WHILE Left(destlister.n,4) ~= 'DEST'
  116.       Lister set destlister.n off
  117.       n = n + 1
  118.     END
  119.     lister refresh handle
  120.   END
  121.   SELECT
  122.     WHEN File.i = "SOURCE"     THEN lister set handle source
  123.     WHEN File.i = "SOURCELOCK" THEN lister set handle source lock
  124.     WHEN File.i = "DEST"       THEN lister set handle dest
  125.     WHEN File.i = "DESTLOCK"   THEN lister set handle dest lock
  126.     OTHERWISE DO
  127.       lister set handle off
  128.       IF i > 0 THEN
  129.         File.0 = File.0 + 1
  130.     END
  131.   END
  132.   IF File.1 = "REQ" THEN
  133.     Lister request handle Filelist
  134.   ELSE IF File.0 > 0 THEN DO s = 1 TO File.0
  135.     Lister select handle File.s 1
  136.   END
  137.   lister refresh handle
  138. END
  139. ELSE DO
  140.   CALL _GetLanguage()
  141.   IF Language = "deutsch" THEN
  142.     address command 'c:RequestChoice "Fehler" "Das Verzeichnis*n'Dir'*nexistiert nicht !" "OK"'
  143.   ELSE
  144.     address command 'c:RequestChoice "Error" "The directory*n'Dir'*ndoesn`t exists !" "OK"'
  145.   EXIT
  146. END
  147.  
  148. _GetLanguage:
  149.   IF Open('lg','ENV:language','R') THEN DO
  150.     language = ReadLn('lg')
  151.     Call Close('lg')
  152.   END
  153.   ELSE Language = "english"
  154. Return
  155.  
  156. EXIT
  157.